import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';

import { ConfigModule } from '@nestjs/config'
import { getConfig } from './utils';


import { JwtAuthGuard } from './common/JWT/jwt-auth.grard';
import { APP_GUARD } from '@nestjs/core';

import { RedisModule } from './db/redis/redis.module';
import { MysqlModule } from './db/mysql/mysql.module';

import { LoginModule } from './service/login/login.module';
import { UserModule } from './service/user/user.module';
import { FileModule } from './service/file/file.module';
import { ChatModule } from './service/chat/chat.module';
import { SocketModule } from './service/socket/socket.module';


@Module({
    // forRoot() 方法就是读取根目录下的 .env 文件
    imports: [
        // forRoot() 方法就是读取根目录下的 .env 文件
        ConfigModule.forRoot({
            isGlobal: true,
            envFilePath: [`.env${process.env.RUNNING_ENV && ('.' + process.env.RUNNING_ENV)}`, '.env'],
            expandVariables: true,
        }),
        // forRoot() 方法就是读取根目录下的 .yaml 文件
        // ConfigModule.forRoot({
        //     ignoreEnvFile: true,
        //     isGlobal: true,
        //     load: [getConfig]
        // }),


        MysqlModule,
        LoginModule,
        UserModule,
        RedisModule,
        FileModule,
        ChatModule,
        SocketModule,
    ],
    controllers: [AppController],
    providers: [
        AppService,
        {
            provide: APP_GUARD,
            useClass: JwtAuthGuard
        },
    
    ],
})
export class AppModule { }
